<?php

/**
 * @property $host
 * @property $protocol
 */
class Class_Server
{

    public function __construct()
    {
        $config =  $config = new Model3_Config('Configuration/server.ini');
        $serverConfig = $config->getArray();
        foreach($serverConfig as $k => $v)
        {
            $c = new stdClass();
            foreach($v as $key => $value)
            {
                $c->$key = $value;
            }
            $this->$k = $c;
        }
    }

    /**
     * Funcion que nos permite de manera mas flexible obtener un valor del archivo de configuración del server
     * @param string $key categoria bajo la cual está pa propiedad buscada
     * @param string $property propiedad buscada
     * @return string valor buscado
     */
    public function getByKeyAndProperty($key, $property)
    {
        $ret = false;
        if(isset ($this->$key) && isset ($this->$key->$property))
        {
            $ret = $this->$key->$property;
        }
        return $ret;
    }

    public static function getFullHost($key = '')
    {
        $server = new Class_Server();
        if($key == '')
        {
            $key = 'server';
        }
        return $server->$key->protocol.'://'.$server->$key->host.'/';
    }

    public static function getProtocol($key = '')
    {
        $server = new Class_Server();
        if($key == '')
        {
            $key = 'server';
        }
        return $server->$key->protocol;
    }

    public static function getHost($key = '')
    {
        $server = new Class_Server();
        if($key == '')
        {
            $key = 'server';
        }
        return $server->$key->host.'/';
    }

    public static function getClearHost($key = '')
    {
        $server = new Class_Server();
        if($key == '')
        {
            $key = 'server';
        }
        $host = $server->$key->host;
        $host = str_replace('www.', '', $host);
        return $host;
    }

    public function getUrlSitioReplica($nombreFix)
    {
        $server = new Class_Server();
        $url = $server->sitio_replica->protocol.'://'.$nombreFix.$server->sitio_replica->host.'/';
        return $url;
    }

    /**
     * El dominio del mail
     * @return <type>
     */
    public static function getEmailDomain()
    {
        $server = new Class_Server();
        return $server->mail->dominio;
    }
    /**
     *  verifica que este activada la bandera de send_mails_to_users(Y)
     * @return boolean true=si esta en Y, false= si esta en otro valor
     */
    public static function isActiveSendMailsToUsers()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'send_mails_to_users');
            if($ret === true)
            {
                $ret = false;
                $value = trim($allMails->send_mails_to_users);
                if($value == 'Y')
                {
                    $ret = true;
                }
            }
        }
        return $ret;
    }

    /**
     *  verifica que este activada la bandera de send_activation_telephony_mail(Y)
     * @return boolean true=si esta en Y, false= si esta en otro valor
     */
    public static function isActiveSendActivationTelephonyMail()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'send_activation_telephony_mail');
            if($ret === true)
            {
                $ret = false;
                $value = trim($allMails->send_activation_telephony_mail);
                if($value == 'Y')
                {
                    $ret = true;
                }
            }
        }
        return $ret;
    }

     /**
     *  verifica que este activada la bandera de send_activation_Pages_mail(Y)
     * @return boolean true=si esta en Y, false= si esta en otro valor
     */
    public static function isActiveSendActivationPagesMail()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'send_activation_pages_mail');
            if($ret === true)
            {
                $ret = false;
                $value = trim($allMails->send_activation_pages_mail);
                if($value == 'Y')
                {
                    $ret = true;
                }
            }
        }
        return $ret;
    }

     /**
     *  verifica que este activada la bandera de send_activation_paquetellamen_mail(Y)
     * @return boolean true=si esta en Y, false= si esta en otro valor
     */
    public static function isActiveSendActivationPaqueteLlamenMail()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'send_activation_paquetellamen_mail');
            if($ret === true)
            {
                $ret = false;
                $value = trim($allMails->send_activation_paquetellamen_mail);
                if($value == 'Y')
                {
                    $ret = true;
                }
            }
        }
        return $ret;
    }
     /**
     *  verifica que este activada la bandera de send_activation_MSE_mail(Y)
     * @return boolean true=si esta en Y, false= si esta en otro valor
     */
    public static function isActiveSendActivationMSEMail()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'send_activation_MSE_mail');
            if($ret === true)
            {
                $ret = false;
                $value = trim($allMails->send_activation_MSE_mail);
                if($value == 'Y')
                {
                    $ret = true;
                }
            }
        }
        return $ret;
    }

    /**
     *  regresa el valor de la bandera de smtp_server
     * @return mixed string=si esta encontro la propiedad, false= si no la encontro
     */
    public static function getSmtpServer()
    {
        $server = new Class_Server();
        $ret = property_exists($server, 'mail');
        if($ret === true)
        {
            $allMails = $server->mail;
            $ret = property_exists($allMails, 'smtp_server');
            if($ret === true)
            {
                $ret = trim($allMails->smtp_server);
            }
        }
        return $ret;
    }

    public static function validHttpReferer($controller, $action)
    {
        $isValid = false;
        if(!isset($_SERVER['HTTP_REFERER']))
        {
            return true;
        }
        $referer = $_SERVER['HTTP_REFERER'];
        $parts = parse_url($referer);
        $params = explode('/', $parts['path']);
        $existController = array_search($controller, $params);
        $existAction = array_search($action, $params);
        if($existController !== false && $existAction !== false)
        {
            $isValid = true;
        }
        return $isValid;
    }

}
